package datosServer;

import java.util.*;
import java.lang.*;
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
/**
 *
 * @author Aiskel
 */
//import java.util.*;
//import java.io.*;
//import java.util.logging.Level;
//import java.util.logging.Logger;


public class Usuario
{
      private String nickname;
      private String clave;
      private String nombre;
      private String apellido;
      private int score;
      private int contIngreso;
      //private Jcalendar2 fechaNac;
     /* private int dia;
      private int mes;
      private int año;*/
      private String fechaNacimiento;
      private Avatar avatar;
      Partida partida;
      ListaPieza piezasUsuario;

      private List <String> listRandom;



      public Usuario()
      {
        nickname="";
        clave="";
        nombre="";
        apellido="";
        score=0;
        contIngreso=0;
        //fechaNac = new Jcalendar2();
       // dia = mes = año = 0;
        fechaNacimiento="";
        partida = new Partida();
        listRandom = new ArrayList();
        piezasUsuario = new ListaPieza();

      }

       public Usuario ( String nickname,String clave,String nombre, String apellido,int dia,int mes,int año)
    {
        this.nombre = nombre;
        this.apellido = apellido;
        this.nickname = nickname;
        this.clave = clave;
        //this.fechaNac = new Jcalendar2(dia,mes,año);
      /*  this.dia = dia;
        this.mes = mes;
        this.año = año;*/
        fechaNacimiento=dia+"/"+mes+"/"+año;
        partida = new Partida();
        this.avatar=new Avatar();
        listRandom = new ArrayList();
         piezasUsuario = new ListaPieza();
       }

        public Usuario (String nickname, String clave, String nombre,String apellido,int dia,int mes,int año,Avatar avatar)
    {
        this.nombre = nombre;
        this.apellido = apellido;
        this.nickname = nickname;
        this.clave = clave;
        /*this.dia = dia;
        this.mes = mes;*/
        fechaNacimiento=dia+"/"+mes+"/"+año;
        this.avatar = avatar;
        listRandom =new ArrayList();
       }

        
        
    public String getFechaNacimiento() {
        return fechaNacimiento;
    }

    public void setFechaNacimiento(String fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }


    public Avatar getAvatar() {
        return avatar;
    }

    public void setAvatar(Avatar avatar) {
        this.avatar = avatar;
    }

        

    public Partida getPartida()
    {
        return partida;
    }

    public void setPartida(Partida partida)
    {   
        this.partida = partida;
        //this.partida.setPartidaID(RandomID());
    }

    public ListaPieza getPiezasUsuario() {
        return piezasUsuario;
    }

    public void setPiezasUsuario(ListaPieza piezasUsuario) {
        this.piezasUsuario = piezasUsuario;
    }

    public List<String> getListRandom() {
        return listRandom;
    }

    public void setListRandom(List<String> listRandom) {
        this.listRandom = listRandom;
    }

  /*  public List<String> getListRandom() {
        return listRandom;
    }

    public void setListRandom(List<String> listRandom) {
        this.listRandom = listRandom;
    }

   */


    public String getApellido() {
        return apellido;
    }

    public void setApellido(String apellido) {
        this.apellido = apellido;
    }


    public String getClave() {
        return clave;
    }

    public void setClave(String clave) {
        this.clave = clave;
    }

    public int getContIngreso() {
        return contIngreso;
    }

    public void setContIngreso(int contIngreso) {
        this.contIngreso = contIngreso;
    }

    public String getNickname() {
        //System.out.println("\n nick: "+nickname+"\n");
        return nickname;
    }

    public void setNickname(String nickname) {
        this.nickname = nickname;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }
/*
    public int getAño() {
        return año;
    }

    public void setAño(int año) {
        this.año = año;
    }

    public int getDia() {
        return dia;
    }

    public void setDia(int dia) {
        this.dia = dia;
    }

    public int getMes() {
        return mes;
    }

    public void setMes(int mes) {
        this.mes = mes;
    }
*/
   /* public Jcalendar2 getFechaNac() {
        return fechaNac;
    }

    public void setFechaNac(Jcalendar2 fechaNac) {
        this.fechaNac = fechaNac;
    }
*/
    
     public boolean equals(Object objeto)
    {
        Usuario segundoObjeto;

        if (! (objeto instanceof Usuario))
            return false;

        segundoObjeto = (Usuario) objeto;

        //if (this.nombre.equals(segundoObjeto.nombre) && this.apellido.equals(segundoObjeto.apellido) && this.cargo.equals(segundoObjeto.cargo))
        if (nickname.hashCode() == segundoObjeto.nickname.hashCode())
        {
            return true;
        }

        return false;
    }

    public int hashCode()
    {
       int hash = 0;
       hash += (nickname != null ? nickname.hashCode():0);

       return hash;
    }


        public boolean BuscarNumRandomList(String valor)
        {
            boolean retorno = false;
            for (String elemento : listRandom)
            {
                if (elemento.compareTo("")==0 ? retorno=false : valor.equals(elemento))
                {
                 return retorno=true;
                }
            }

            return false;







           /* Iterator ite = listRandom.iterator();
            int cont =0;
            int comparo;

            Object [] arregloRandom; String valorArregloRandom="";

            arregloRandom = listRandom.toArray();

            while (ite.hasNext())
            {
                valorArregloRandom="";
                valorArregloRandom = (String) arregloRandom[cont];
                comparo=valor.compareTo(valorArregloRandom);

                if (comparo == 0)
                {
                    return true;
                }
                cont = cont++;
            }
            return false;*/
        }




        public String RandomID()
        {
            String valor="";
            int posicion=1;
            boolean estaNum = true;
            //boolean estaValor=false;

            while (estaNum)
            {
              valor="";
                //System.out.println("\nposicion antes..: "+posicion);
             //posicion = posicion+(int)(Math.random());
              //  System.out.println("posicion..: "+posicion
              posicion=posicion*3;
                //System.out.println("posicion luego de multiplicar..: "+posicion);
              valor = valor.valueOf(posicion);
               //System.out.println(" m...: "+valor+"\n");

              estaNum = BuscarNumRandomList(valor);//devuelve true si lo ncontro
            }

            if (!estaNum)
            {
                //System.out.println("\nestaNum...: "+estaNum+" ");
               // partida.setPartidaID(valor);
                //System.out.println("\n valor...: "+valor+"\n");
                listRandom.add(valor);

            }
           return valor;
        }







/*

    public int hashCodePartida()
    {
       String hashPartida = "1";
       int hashP=1;
       int valor = 0;

       if (listRandom!=null)
       {
           hashP=hashP*7;

           Object [] ArgRandom=listRandom.toArray();

           while(valor<ArgRandom.length)
           {
               if((Integer.parseInt((String) ArgRandom[valor]))==hashP)
               {
                hashP=hashP*9;
                valor=0;
               }
               else
               {
                   valor++;
               }
           }
       }

       listRandom.add(hashP);hashPartida.valueOf(hashP);
       partida.setPartidaID(, this);

    }
*/

   /* public String toString()
    {
        String cadena = "";

        cadena += "Nombre: " + this.getNombre() + "\n";
        cadena += "Apellido: " + this.getApellido() + "\n";
        cadena += "Nickname: " + this.getNickname() + "\n";

        return cadena;
    }*/
}